package util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

public class Data {
	// ---------------------------------------------------------------------------------------------
	public List<String> dataParcela(int qtdParcela, String dataInicial, int melhorDia)
			throws ParseException {

		ArrayList<String> datas = new ArrayList<>();
		String mesFormatado = null;
		String diaFormatado = null;
		int dia;
		int mes;
		int ano;

		// pegar por paramentro
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		sdf.setLenient(false);
		Calendar data = Calendar.getInstance();
		data.setTime(sdf.parse(dataInicial));
		datas.add(dataInicial);
		
		data.add(Calendar.MONTH, 1);
				
		for (int i = 0; i < qtdParcela; i++) {
			
			dia = melhorDia;
			mes = data.get(Calendar.MONTH)+1;
			ano = data.get(Calendar.YEAR);
			
			
			if ((dia == 31) & (mes == 4)) {
				dia = dia - 1;

			}
			if ((dia == 31) & (mes == 6)) {
				dia = dia - 1;

			}
			if ((dia == 31) & (mes == 9)) {
				dia = dia - 1;

			}
			if ((dia == 31) & (mes == 11)) {
				dia = dia - 1;

			}
			if ((dia == 29) & (mes == 2)) {

				dia = dia - 1;

			}
			if ((dia == 30) & (mes == 2)) {

				dia = dia - 2;

			}
			if ((dia == 31) & (mes == 2)) {

				dia = dia - 3;

			}
			if (dia >= 10){
				diaFormatado = Integer.toString(dia);
			}
			if (mes > 9){
				mesFormatado = Integer.toString(mes);
			}

			if (dia <= 9) {
				diaFormatado = "0" + dia;
			}
			
			if (mes <= 9) {
				mesFormatado = "0"+mes;
			}



			String dataFormatada = diaFormatado + "/" + mesFormatado + "/" + ano;
			
			datas.add(dataFormatada);
			data.add(Calendar.MONTH, 1);

		}
		return datas;
		
	}

	// ----------------------------------------------------------------------------------------------
	public List<String> dataAvisoParcela(int qtdParcela, String dataInicial, int melhorDia)
			throws ParseException {

		ArrayList<String> datas = new ArrayList<>();
		String mesFormatado = null;
		String diaFormatado = null;
		int dia;
		int mes;
		int ano;

		// pegar por paramentro
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); // formato para a Data
		sdf.setLenient(false); // validar a data 
		Calendar data = Calendar.getInstance(); // instancia calendar nativo JAVA
		data.setTime(sdf.parse(dataInicial)); // formatar a data para o pardao dd/mm/yyyy
		int mes1 = data.get(Calendar.MONTH)+1;
		data.add(Calendar.DAY_OF_MONTH, -6); // subtrair 6 dias da data atual
		int mes2 = data.get(Calendar.MONTH)+1;
		String data1 = sdf.format(data.getTime()); // converter a data para String
		datas.add(data1); // adicionar a primeira data ao arrayList
		
			//data.add(Calendar.MONTH, 1);
			
			System.out.println(mes1);
			System.out.println(mes2);
			
			if (mes1 < mes2){
				//System.out.println("entour");
				data.add(Calendar.MONTH, 2);
			}
			
			if (mes1 == mes2){
				//System.out.println("igualdade");
				data.add(Calendar.MONTH, 1);
			}
			
			if (mes1 > mes2){
				//System.out.println("igualdade");
				data.add(Calendar.MONTH, 2);
			}
			
			
				
		for (int i = 0; i < qtdParcela; i++) {
			
			dia = melhorDia;
			mes = data.get(Calendar.MONTH)+1;
			ano = data.get(Calendar.YEAR);
			
			System.out.println(mes);
			
			if ((dia == 31) & (mes == 4)) {
				dia = dia - 1;

			}
			if ((dia == 31) & (mes == 6)) {
				dia = dia - 1;

			}
			if ((dia == 31) & (mes == 9)) {
				dia = dia - 1;

			}
			if ((dia == 31) & (mes == 11)) {
				dia = dia - 1;

			}
			if ((dia == 29) & (mes == 2)) {

				dia = dia - 1;

			}
			if ((dia == 30) & (mes == 2)) {

				dia = dia - 2;

			}
			if ((dia == 31) & (mes == 2)) {

				dia = dia - 3;

			}
			if (dia >= 10){
				diaFormatado = Integer.toString(dia);
			}
			if (mes > 9){
				mesFormatado = Integer.toString(mes);
			}

			if (dia <= 9) {
				diaFormatado = "0" + dia;
			}
			
			if (mes <= 9) {
				mesFormatado = "0"+mes;
			}


			String dataFormatada = diaFormatado + "/" + mesFormatado + "/" + ano;
			
			data.setTime(sdf.parse(dataFormatada));
			mes1 = data.get(Calendar.MONTH)+1;
			data.add(Calendar.DAY_OF_MONTH, -6);
			mes2 = data.get(Calendar.MONTH)+1;
			String dataFinal = sdf.format(data.getTime());
			
			System.out.println("mes1  "+mes1);
			System.out.println("mes2 "+mes2);
			
			if (mes1 == mes2){
				System.out.println("igualdade2");
				data.add(Calendar.MONTH, 1);
			}
			if (mes1 == 0){
				System.out.println("erro");
				data.add(Calendar.MONTH, 2);
			}
			
			if (mes1 > mes2){
				System.out.println("maior");
				data.add(Calendar.MONTH, 2);
			}
			
			if (mes1 < mes2){
				//System.out.println("entour");
				data.add(Calendar.MONTH, 2);
			}
			System.out.println(data.getTime());
			datas.add(dataFinal);
			

			
			
		}
		return datas;
	}
	// ----------------------------------------------------------------------------------------------

}